#include <iostream>
#include "Raquette.h"
#include "Balle.h"

#define LONGUEUR_RAQUETTE 100
#define HAUTEUR_FENETRE 600
#define TAILLEBALLE 25 +2
#define SERVEUR_COORD 0
#define CLIENT_COORD 1
#define DROITE 2
#define GAUCHE 3

using namespace std;

Raquette::Raquette(int x, int y, sf::Color color){
    this->x=x;
    this->y=y;
    longueurRaquette=LONGUEUR_RAQUETTE;
    shape=new RectangleShape();
    shape->setSize(sf::Vector2f(25, LONGUEUR_RAQUETTE));
    shape->setOutlineColor(color);
    shape->setOutlineThickness(2);
    shape->setPosition(x, y);
}


void Raquette::setY(int y){
    if(y <= HAUTEUR_FENETRE - longueurRaquette)
    {
        shape->setPosition(x, y);
        this->y=y;
    }
}

bool Raquette::checkCollision(int serveur, Balle *balle){

    if(serveur == SERVEUR_COORD)
    {
        if(balle->getDirectionHorizontale() == GAUCHE && balle->getX()+balle->getSpeed() <= x + TAILLEBALLE && balle->getY() + TAILLEBALLE >= HAUTEUR_FENETRE - (HAUTEUR_FENETRE-y) && balle->getY() <= HAUTEUR_FENETRE - (HAUTEUR_FENETRE-y) + longueurRaquette)
            return true;
        else
            return false;
    }else if(serveur == CLIENT_COORD)
    {
        //cout << "CLIENT : " << x << endl;
        if(balle->getDirectionHorizontale() == DROITE && balle->getX()+balle->getSpeed() >= x - TAILLEBALLE && balle->getY() + TAILLEBALLE >= HAUTEUR_FENETRE - (HAUTEUR_FENETRE-y) && balle->getY() <= HAUTEUR_FENETRE - (HAUTEUR_FENETRE-y) + longueurRaquette)
            return true;
        else
            return false;
    }

    return false;
}

void Raquette::decreaseSize()
{
    if(longueurRaquette >= 40)
    {
        longueurRaquette-=20;
        shape->setSize(Vector2f(25, longueurRaquette));
    }
}

int Raquette::getX(){return x;}
int Raquette::getY(){return y;}
int Raquette::getLongueur(){return longueurRaquette;}
RectangleShape* Raquette::getShape(){return shape;}
void Raquette::setLongueur(int longueur){this->longueurRaquette=longueur; shape->setSize(Vector2f(25, longueurRaquette ));}



